// 1、理解什么是函数依赖？什么是依赖追踪？什么是依赖更新触发？
// 我们拥有价格信息、数量、和总价。 总价 = 价格 × 数量
// 当其中的任意数据变了，都需要手动命令重新计算，有什么好方法吗？

// 基本数据
let price = 5;
let quantity = 2;
let totalPrice = 0;

let dep = new Set(); // 依赖队列，需要去重
let effect = () => {
  totalPrice = price * quantity;// 依赖函数：totalPrice依赖于price和quantity
}; 
// 依赖追踪
function track() {
  dep.add(effect);// 把依赖函数添加进依赖队列
}
// 依赖触发
function trigger() {
  dep.forEach((effect) => effect());// 依次执行依赖队列里的所有函数
}

// 测试用例1
effect();
log(totalPrice); // 10
price = 100;
log(totalPrice); // 10，price变化了，但是totalPrice并不会变
track();
trigger();
log(totalPrice); // 200，追踪并触发依赖后，totalPrice发生了改变，达到了我们的目的。
